<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1"><meta name="robots" content="noodp"/><title>拟合(Fitting) | Yasin&#39;s Blog</title><meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:image" content=""/>
<meta name="twitter:title" content="拟合(Fitting)"/>
<meta name="twitter:description" content=""/><meta name="twitter:creator" content="@wangyuexin8"/><meta name="Description" content="KEEP KWARKING"><meta property="og:title" content="拟合(Fitting)" />
<meta property="og:description" content="提取完边缘后如何使用数学模型来描述边缘？ 例如：在桌子上有几枚硬币，在经过边缘提取后，需要描述出硬币的圆心坐标和圆的大小 难点 噪声：噪声的存在使" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://blog.aimoon.top/fitting/" /><meta property="og:image" content="https://blog.aimoon.top/images/favicon.svg"/><meta property="article:section" content="posts" />
<meta property="article:published_time" content="2020-07-15T18:30:26&#43;08:00" />
<meta property="article:modified_time" content="2021-03-29T11:34:14&#43;08:00" /><meta property="og:site_name" content="Yasin&#39;s Blog" />

<meta name="application-name" content="YASIN">
<meta name="apple-mobile-web-app-title" content="YASIN"><meta name="theme-color" content="#ffffff"><meta name="msapplication-TileColor" content="#da532c"><link rel="icon" href="/images/favicon.svg" type="image/x-icon"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><link rel="manifest" href="/site.webmanifest"><link rel="canonical" href="https://blog.aimoon.top/fitting/" /><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/normalize.css@8.0.1/normalize.min.css"><link rel="stylesheet" href="/css/style.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/animate.css@3.7.2/animate.min.css"><script type="application/ld+json">
    {
        "@context": "http://schema.org",
        "@type": "BlogPosting",
        "headline": "拟合(Fitting)",
        "inLanguage": "zh-CN",
        "mainEntityOfPage": {
            "@type": "WebPage",
            "@id": "https:\/\/blog.aimoon.top\/fitting\/"
        },"image": ["https:\/\/blog.aimoon.top\/images\/cover.png"],"genre": "posts","keywords": "RANSAC, 拟合, 霍夫变换","wordCount":  1662 ,
        "url": "https:\/\/blog.aimoon.top\/fitting\/","datePublished": "2020-07-15T18:30:26+08:00","dateModified": "2021-03-29T11:34:14+08:00",
        "publisher": {
            "@type": "Person",
            "name": "Wang Yuexin", "image": [
            {
            "@type": "ImageObject",
            "url": "https:\/\/blog.aimoon.top\/images\/avatars.png"
            }
            ]},"author": {
                "@type": "Person",
                "name": "Wang Yuexin"
            },"description": ""
    }
    </script><script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "BreadcrumbList",
        "itemListElement": [{
            "@type": "ListItem",
            "position": 1,
            "name": "主页",
            "item": "https:\/\/blog.aimoon.top"
        },{
            "@type": "ListItem",
            "position": 2,
            "name": "计算机视觉",
            "item": "https://blog.aimoon.top/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/"
        },{
                "@type": "ListItem",
                "position": 3,
                "name": "拟合(Fitting)"
            }]
    }
</script></head>
    <body data-header-desktop="auto" data-header-mobile="auto"><script>(window.localStorage && localStorage.getItem('theme') ? localStorage.getItem('theme') === 'dark' : ('light' === 'auto' ? window.matchMedia('(prefers-color-scheme: dark)').matches : 'light' === 'dark')) && document.body.setAttribute('theme', 'dark');</script>

        <div id="mask"></div><div class="wrapper"><header>
    <div class="desktop header" id="header-desktop">
        <div class="header-wrapper">
            <div class="header-title">
                <a href="/" title="Yasin&#39;s Blog" class="header-logo logo-svg">Yasin&#39;s Blog</a>
            </div>
            <div class="menu">
                <nav>
                    <h2 class="display-hidden">Основная навигация</h2>
                    <ul class="menu-inner"><li>
                            <a class="menu-item" href="/posts/"> 目录 </a>
                        </li><li>
                            <a class="menu-item" href="/tags/"> 标签 </a>
                        </li><li>
                            <a class="menu-item" href="/categories/"> 归档 </a>
                        </li><li>
                            <a class="menu-item" href="/comments/"> 留言 </a>
                        </li><li>
                            <a class="menu-item" href="https://aimoon.top" rel="noopener noreffer" target="_blank"> 主页 </a>
                        </li></ul>
                </nav><span class="menu-item delimiter"></span><span class="menu-item search" id="search-desktop">
                        <input type="text" placeholder="search……" id="search-input-desktop">
                        <a href="javascript:void(0);" class="search-button search-toggle" id="search-toggle-desktop" title="搜索">
                            <span class="svg-icon icon-search"></span>
                        </a>
                        <a href="javascript:void(0);" class="search-button search-clear" id="search-clear-desktop" title="清空">
                            <span class="svg-icon icon-cancel"></span>
                        </a>
                        <span class="search-button search-loading" id="search-loading-desktop">
                            <span class="svg-icon icon-loading"></span>
                        </span>
                    </span><a href="javascript:void(0);" class="menu-item theme-switch" title="切换主题">
                <span class="svg-icon icon-moon"></span>
                </a>
            </div>
        </div>
    </div><div class="mobile header" id="header-mobile">
        <div class="header-container">
            <div class="header-wrapper">
                <div class="header-title">
                    <a href="/" title="Yasin&#39;s Blog" class="header-logo">Yasin&#39;s Blog</a>
                </div>
                <div class="menu-toggle" id="menu-toggle-mobile">
                    <span></span><span></span><span></span>
                </div>
            </div>
            <div class="menu" id="menu-mobile"><div class="search-wrapper">
                        <div class="search mobile" id="search-mobile">
                            <input type="text" placeholder="search……" id="search-input-mobile">
                            <a href="javascript:void(0);" class="search-button search-toggle" id="search-toggle-mobile" title="搜索">
                                <span class="svg-icon icon-search"></span>
                            </a>
                            <a href="javascript:void(0);" class="search-button search-clear" id="search-clear-mobile" title="清空">
                                <span class="svg-icon icon-cancel"></span>
                            </a>
                            <span class="search-button search-loading" id="search-loading-mobile">
                                <span class="svg-icon icon-loading"></span>
                            </span>
                        </div>
                        <a href="javascript:void(0);" class="search-cancel" id="search-cancel-mobile">
                            取消
                        </a>
                    </div><nav>
                    <h2 class="display-hidden">Основная навигация</h2>
                    <ul><li>
                            <a class="menu-item" href="/posts/" title="">目录</a>
                        </li><li>
                            <a class="menu-item" href="/tags/" title="">标签</a>
                        </li><li>
                            <a class="menu-item" href="/categories/" title="">归档</a>
                        </li><li>
                            <a class="menu-item" href="/comments/" title="">留言</a>
                        </li><li>
                            <a class="menu-item" href="https://aimoon.top" title="" rel="noopener noreffer" target="_blank">主页</a>
                        </li></ul>
                </nav>
                <a href="javascript:void(0);" class="menu-item theme-switch" title="切换主题">
                    <span class="svg-icon icon-moon"></span>
                </a></div>
        </div>
    </div><div class="search-dropdown desktop">
    <div id="search-dropdown-desktop"></div>
</div>
<div class="search-dropdown mobile">
    <div id="search-dropdown-mobile"></div>
</div></header><main class="main">
<div class="container content-article page-toc theme-classic"><div class="toc" id="toc-auto">
            <div class="toc-title">目录</div>
            <div class="toc-content" id="toc-content-auto"></div>
        </div>
    

    
    
    <article>
    

        <header class="header-post">

            

            
            <div class="post-title">

                    <div class="post-all-meta">
                        <nav class="breadcrumbs">
    <ol>
        <li><a href="/">主页 </a></li><li><a href="/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/">计算机视觉 </a></li><li>拟合(Fitting)</li>
    </ol>
</nav>
                        <h1 class="single-title flipInX">拟合(Fitting)</h1><div class="post-meta summary-post-meta"><span class="post-category meta-item">
                                <a href="/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/"><span class="svg-icon icon-folder"></span>计算机视觉</a>
                            </span><span class="post-meta-date meta-item">
                                <span class="svg-icon icon-clock"></span><time class="timeago" datetime="2020-07-15">2020-07-15</time>
                            </span><span class="post-meta-words meta-item">
                                <span class="svg-icon icon-pencil"></span>约 1662 字
                            </span>
                            <span class="post-meta-reading meta-item">
                                <span class="svg-icon icon-stopwatch"></span>预计阅读 4 分钟
                            </span>
                        </div>

                    </div>

                </div>

                </header>

        <div class="article-post toc-start">

            <div class="content-block content-block-first content-block-position">

                <div class="post single"><div class="image-theme-classic">
                        <img src="https://img-blog.csdnimg.cn/20200715184300485.png" style="width: 100%">
                    </div><div class="details toc" id="toc-static"  data-kept="">
                        <div class="details-summary toc-title">
                            <span>目录</span>
                        </div>
                        <div class="details-content toc-content" id="toc-content-static"><nav id="TableOfContents">
  <ul>
    <li><a href="#难点">难点</a></li>
    <li><a href="#最小二乘least-square">最小二乘（Least Square）</a></li>
    <li><a href="#roubst-fitting--ransac">Roubst Fitting &amp; RANSAC</a>
      <ul>
        <li><a href="#roubst-fitting鲁棒拟合">Roubst fitting（鲁棒拟合）</a></li>
        <li><a href="#ransac随机采样一致性">RANSAC（随机采样一致性）</a></li>
      </ul>
    </li>
    <li><a href="#霍夫变换hough-transfrom">霍夫变换（Hough Transfrom）</a></li>
  </ul>
</nav></div>
                    </div><p>提取完边缘后如何使用数学模型来描述边缘？
例如：在桌子上有几枚硬币，在经过边缘提取后，需要描述出硬币的圆心坐标和圆的大小</p>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/2020071510373119.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/2020071510373119.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<h2 id="难点" class="headerLink"><a href="#%e9%9a%be%e7%82%b9" class="header-mark"></a>难点</h2><p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715104543718.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715104543718.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<ol>
<li>噪声：噪声的存在使拟合的模型偏离真实的线</li>
<li>外点：在目标图形以外的线，如上图中的目标图形为“车”，左边的“栅栏”就是外点</li>
<li>目标图形部分被遮挡，使部分图形消失</li>
</ol>
<h2 id="最小二乘least-square" class="headerLink"><a href="#%e6%9c%80%e5%b0%8f%e4%ba%8c%e4%b9%98least-square" class="header-mark"></a>最小二乘（Least Square）</h2><p>针对点都在线上的一些简单模型</p>
<ul>
<li><strong>最小二乘</strong></li>
</ul>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715110306424.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715110306424.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<p>能量函数$E$描述的是所有的点与拟合的线在$y$方向上的差值的和，最后的目标是求出差值最小时的$(m,b)$即矩阵$B$作为这个模型的解</p>
<ul>
<li>
<p><strong>权最小二乘</strong>
当拟合的直线是<strong>平行$y$轴</strong>时就无法按照上面的公式计算$E$（最小二乘对旋转没有效果）</p>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715122135728.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715122135728.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
</li>
</ul>
<p>权最小二乘将点在$y$方向的距离改为对直线距离的平方，就可以避免旋转产生的问题
，它的几何描述就是所有的向量$(x_i-\bar x,y_i-\bar y)$在向量$(a,b)$的投影的值最小</p>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715123438477.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715123438477.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<ul>
<li>
<p><strong>极大似然估计</strong></p>
<p>使用概率分布的思想来理解权最小二乘，概率越大拟合效果越好，<a href="https://zhuanlan.zhihu.com/p/26614750" target="_blank" rel="noopener noreffer">极大似然估计</a>，就是利用已知的样本结果信息，反推最具有可能（最大概率）导致这些样本结果出现的模型参数值，它提供了一种给定观察数据来评估模型参数的方法，即：“模型已定，参数未知”。</p>
</li>
</ul>
<p>




<figure class="render-image"><a target="_blank" href="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9waWMxLnpoaW1nLmNvbS84MC92Mi0zMDEzYWNkMGIxMjhiY2MyOWNkNGE0MjU4ZjliYzZlN183MjB3LmpwZw" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9waWMxLnpoaW1nLmNvbS84MC92Mi0zMDEzYWNkMGIxMjhiY2MyOWNkNGE0MjU4ZjliYzZlN183MjB3LmpwZw"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<blockquote>
<p>如果通过极大似然估计，得到模型中参数$\mu$和$\sigma$的值，那么这个模型的均值和方差以及其它所有的信息我们就知道了。</p>
</blockquote>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715125450572.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715125450572.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<h2 id="roubst-fitting--ransac" class="headerLink"><a href="#roubst-fitting--ransac" class="header-mark"></a>Roubst Fitting &amp; RANSAC</h2><p>当存在外点时，普通的（权）最小二乘就无法很好的拟合模型</p>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715134851664.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715134851664.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<h3 id="roubst-fitting鲁棒拟合" class="headerLink"><a href="#roubst-fitting%e9%b2%81%e6%a3%92%e6%8b%9f%e5%90%88" class="header-mark"></a>Roubst fitting（鲁棒拟合）</h3><p>通过函数$\rho(u;\sigma)$将点到直线的距离$u$在较大的范围时对直线影响的贡献值缩小，$\sigma$为设置的参数，当参数越小对所取的预拟合模型的区域越小，例如当$\sigma=0.1$时，对超过2以后的区域几乎就不做考虑了





<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715135938725.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715135938725.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<ul>
<li><strong>鲁棒函数估计</strong></li>
</ul>
<ol>
<li>对于一个非线性的优化问题就不能使用前面的方程求解，需要使用迭代的方式求解类似于梯度下降</li>
<li>先不考虑鲁棒拟合的问题，利用最小二乘得到一个初始解</li>
<li>根据经验将尺度参数$\sigma$设置成$1.5$倍的平均残差</li>
</ol>
<ul>
<li><strong>处理后的效果</strong></li>
</ul>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715141953172.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715141953172.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<h3 id="ransac随机采样一致性" class="headerLink"><a href="#ransac%e9%9a%8f%e6%9c%ba%e9%87%87%e6%a0%b7%e4%b8%80%e8%87%b4%e6%80%a7" class="header-mark"></a>RANSAC（随机采样一致性）</h3><p>当存在许多的点都不在模型上，或者是图片被遮挡，这种时候就需要使用较少的点来拟合出模型</p>
<ul>
<li><strong>RANSAC</strong></li>
</ul>
<ol>
<li>选择一个最小的集合$s$（估计一条直线需要两个点）</li>
<li>拟合出一个模型</li>
<li>设置一个门限$t$</li>
<li>用门限$t$内剩余的点给这个模型“投票”，即“离得近”就 得分</li>
<li>重复上述过程，取“得分”最高的模型,设置迭代次数$N$</li>
</ol>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715155358502.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715155358502.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<ul>
<li><strong>选择参数</strong></li>
</ul>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715160536653.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715160536653.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<blockquote>
<p>$e$：外点率，$s$：模型的最小范围，$N$：最大迭代次数，$p$：正确率</p>
</blockquote>
<ul>
<li>
<p><strong>自适应的参数提取</strong>
在实际问题中，只知道参数$t,s$,无法知道外点率$e$也就无法确认迭代次数$N$。
解决方法如下：





<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715162639465.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715162639465.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
</li>
<li>
<p><strong>使用RANSAC思想进行指纹识别</strong></p>
</li>
</ul>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715165626274.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715165626274.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<h2 id="霍夫变换hough-transfrom" class="headerLink"><a href="#%e9%9c%8d%e5%a4%ab%e5%8f%98%e6%8d%a2hough-transfrom" class="header-mark"></a>霍夫变换（Hough Transfrom）</h2><p>于对存在大量的线的模型，即使设置了较小的门限也无法有效的区分“谁是谁的内点”





<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715165805391.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715165805391.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<p>主要的改进策略：<strong>将点不在是对某一条直线投票，将投票离散化，使图像空间对参数空间进行转换</strong>





<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715170533379.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715170533379.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<blockquote>
<p><strong>图像空间的一条直线在参数空间是一个点</strong>，参数空间多条线的交点是图像空间的<strong>边</strong></p>
</blockquote>
<p>如果使用直角坐标那么参数范围不好界定，穷举就很困难，例如当图像空间的一条竖直方向的直线，此时$x$取定值，$y$取任意值，在参数空间中就无法表示；在训练过程中也无法给$m,b$划分范围。</p>
<p>使用<strong>极坐标系</strong>问题就解决了：极坐标的$\theta$可以取$[0 ,180]$，可以完整的与图像空间对应</p>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715173126889.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715173126889.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<ul>
<li><strong>一些例子</strong></li>
</ul>
<p>




<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715174748132.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715174748132.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
<ul>
<li>
<p><strong>霍夫变换处理噪声</strong></p>
<p>在Candy算子中得到点时就知道了梯度方向，相应的边缘方向的范围就大概确认了，这是就是可以缩小$\theta$的范围，从而解决了噪声的影响，也简化了计算





<figure class="render-image"><a target="_blank" href="https://img-blog.csdnimg.cn/20200715175658345.png" title=" " >
        <img loading="lazy" decoding="async"
             class="render-image"
             src="https://img-blog.csdnimg.cn/20200715175658345.png"
            alt=" "
        />
    </a><figcaption class="image-caption"> </figcaption>
</figure></p>
</li>
<li>
<p><strong>霍夫变换拟合圆</strong></p>
<p>确定一个圆需要圆心坐标$(x, y)$和半径$r$，有三个参数，参数空间就需要是一个三维空间，取圆上的一个点，则可以由梯度方向确定半径方向，穷举所用的$r$(大于0，小于图像长度)，遍历圆上的点对$r$进行投票，最后在参数空间会得到一个票数高的三维空间，这个三维空间的中的一点$(x,y,r)$就可以作为拟合的圆心和半径。





<img loading="lazy" decoding="async"
         class="render-image"
         src="https://img-blog.csdnimg.cn/20200715183159709.png"
         alt="https://img-blog.csdnimg.cn/20200715183159709.png"
         title="20200715183159709.png"
    /></p>
</li>
</ul>
<p><strong>学习资源：<a href="https://www.bilibili.com/video/BV1nz4y197Qv" target="_blank" rel="noopener noreffer">北京邮电大学计算机视觉——鲁鹏</a></strong></p>
</div><footer>
                        <div class="post">


<div class="post-share"><div class="share-link">
        <a class="share-icon share-twitter" href="javascript:void(0);" title="分享到 Twitter" data-sharer="twitter" data-url="https://blog.aimoon.top/fitting/" data-title="拟合(Fitting)" data-via="wangyuexin8" data-hashtags="RANSAC,拟合,霍夫变换"><span class="svg-social-icon icon-twitter"></span></a>
    </div><div class="share-link">
        <a class="share-icon share-facebook" href="javascript:void(0);" title="分享到 Facebook" data-sharer="facebook" data-url="https://blog.aimoon.top/fitting/" data-hashtag="RANSAC"><span class="svg-social-icon icon-facebook"></span></a>
    </div><div class="share-link">
        <a class="share-icon share-whatsapp" href="javascript:void(0);" title="分享到 WhatsApp" data-sharer="whatsapp" data-url="https://blog.aimoon.top/fitting/" data-title="拟合(Fitting)" data-web><span class="svg-social-icon icon-whatsapp"></span></a>
    </div><div class="share-link">
        <a class="share-icon share-blogger" href="javascript:void(0);" title="分享到 Blogger" data-sharer="blogger" data-url="https://blog.aimoon.top/fitting/" data-title="拟合(Fitting)" data-description=""><span class="svg-social-icon icon-blogger"></span></a>
    </div></div>

<div class="footer-post-author">
    <div class="author-avatar"><a href="https://aimoon.top" target="_blank"><img alt="Undergraduate Student of Artificial Intelligence 😜" src="https://blog.aimoon.top/images/avatars.png"></a></div>
    <div class="author-info">
        <div class="name"><a href="https://aimoon.top" target="_blank">Wang Yuexin</a></div>
        <div class="number-posts">Undergraduate Student of Artificial Intelligence 😜</span></div>
    </div>
</div><div class="post-tags"><a href="/tags/ransac/" class="tag">RANSAC</a><a href="/tags/%E6%8B%9F%E5%90%88/" class="tag">拟合</a><a href="/tags/%E9%9C%8D%E5%A4%AB%E5%8F%98%E6%8D%A2/" class="tag">霍夫变换</a></div></div>
                </footer></div>
        <div id="toc-final"></div>
        </div>

    
    </article>
    <section class="page single comments content-block-position">
        <h1 class="display-hidden">Комментарии</h1><div id="comments"><div id="disqus_thread" class="comment" style="padding-top: 1.5rem"></div>
            <noscript>
                Please enable JavaScript to view the comments powered by <a href="https://disqus.com/?ref_noscript">Disqus</a>.
            </noscript></div></section></div>

</main><footer class="footer">
        <div class="footer-container"><div class="footer-line"><div><span id="timeDate">正在烧脑计算建站时间...</span><span id="times"></span><script>var now = new Date();function createtime(){var grt= new Date("05/20/2020 00:00:00");now.setTime(now.getTime()+250);days = (now - grt ) / 1000 / 60 / 60 / 24;dnum = Math.floor(days);hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum);hnum = Math.floor(hours);if(String(hnum).length ==1 ){hnum = "0" + hnum; }minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum);mnum = Math.floor(minutes);if(String(mnum).length ==1 ){mnum = "0" + mnum;}seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum);snum = Math.round(seconds);if(String(snum).length ==1 ){snum = "0" + snum;}document.getElementById("timeDate").innerHTML = "&nbsp"+dnum+"&nbsp天";document.getElementById("times").innerHTML = hnum + "&nbsp小时&nbsp" + mnum + "&nbsp分&nbsp" + snum + "&nbsp秒";}setInterval("createtime()",250);</script></div></div><div class="footer-line"><i class="svg-icon icon-copyright"></i><span>2020 - 2021</span><span class="author">&nbsp;<a href="https://aimoon.top" target="_blank">Yasin</a></span>&nbsp;|&nbsp;<span class="license"><a rel="license external nofollow noopener noreffer" href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank">CC BY-NC 4.0</a></span><span class="icp-splitter">&nbsp;|&nbsp;</span><br class="icp-br"/>
                    <span class="icp"><a href="https://blog.pangao.vip/icp/xmoon.info">🧑ICP证000000号</a></span></div>
        </div>
    </footer></div>

        <aside id="fixed-buttons"><a href="#" id="back-to-top" class="fixed-button" title="回到顶部">
                <i class="svg-icon icon-arrow-up"></i>
            </a><a href="#" id="view-comments" class="fixed-button" title="查看评论">
                <i class="svg-icon icon-comments-fixed"></i>
            </a>
        </aside><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/copy-tex.min.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.css"><script src="https://yasin5.disqus.com/embed.js" defer></script><script src="https://cdn.jsdelivr.net/npm/smooth-scroll@16.1.3/dist/smooth-scroll.min.js"></script><script src="https://cdn.jsdelivr.net/npm/autocomplete.js@0.37.1/dist/autocomplete.min.js"></script><script src="https://cdn.jsdelivr.net/npm/lunr@2.3.8/lunr.min.js"></script><script src="/lib/lunr/lunr.stemmer.support.min.js"></script><script src="/lib/lunr/lunr.zh.min.js"></script><script src="https://cdn.jsdelivr.net/npm/twemoji@13.0.0/dist/twemoji.min.js"></script><script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js"></script><script src="https://cdn.jsdelivr.net/npm/sharer.js@0.4.0/sharer.min.js"></script><script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js"></script><script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/auto-render.min.js"></script><script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/copy-tex.min.js"></script><script src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/contrib/mhchem.min.js"></script><script src="https://cdn.jsdelivr.net/npm/cookieconsent@3.1.1/build/cookieconsent.min.js"></script><script>window.config={"code":{"copyTitle":"复制到剪贴板","maxShownLines":10},"comment":{},"cookieconsent":{"content":{"dismiss":"同意","link":"了解更多","message":"本网站使用 Cookies 来改善您的浏览体验."},"enable":true,"palette":{"button":{"background":"#f0f0f0"},"popup":{"background":"#1aa3ff"}},"theme":"edgeless"},"math":{"delimiters":[{"display":true,"left":"$$","right":"$$"},{"display":true,"left":"\\[","right":"\\]"},{"display":false,"left":"$","right":"$"},{"display":false,"left":"\\(","right":"\\)"}],"strict":false},"search":{"highlightTag":"em","lunrIndexURL":"/index.json","lunrLanguageCode":"zh","lunrSegmentitURL":"/lib/lunr/lunr.segmentit.js","maxResultLength":10,"noResultsFound":"没有找到结果","snippetLength":30,"type":"lunr"},"twemoji":true};</script><script src="/js/theme.min.js"></script><script>
                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

	        ga('create', 'UA-167439955-2', 'auto');
	        ga('set', 'anonymizeIp', true);
	        ga('send', 'pageview');
	    </script></body>
</html>
